package com.fjwt.gz.core.constants;

import java.util.HashMap;
import java.util.Map;

/**
 * 常量
 *
 * @Author: Will
 * @Date: 2023-12-27
 * @Version: 1.0
 */
public class Constants {

    public interface SYS_ROLE_TYPE{
        String MANAGER = "MANAGER"; // 平台： 一般指运营平台系统。 或者 或者平台收益者。
        String MCH = "MCH";  // 商户系统 or  商户角色
        String PROXY="PROXY"; //机构系统
    }

    /**
     * 活动归属平台：MARKETING 营销平台   HOTEL 民宿平台 （可多选，默认营销平台）
     */
    public interface BELONG_TO_PLATFORM{
        String MARKETING = "MARKETING";
        String HOTEL = "HOTEL";
    }

    /**
     * 奖品类型
     */
    public interface AWARD {
        int COUPON = 0;//卡券
        int GOODS = 1;//实物
        int VIRTUAL_COUPON = 2;//虚拟券
        int SCORE = 3;//积分
    }

    /**
     * 虚拟奖品类型
     */
    public interface VIRTUAL_AWARD {
        int CDK = 0;//卡密商品
        int PROXY_PAY = 1;//代充商品
    }

    /**
     * Redis Activity
     */
    public interface REDIS_ACTIVITY {
        String FILENAME = "ACTIVITY:";//文件夹名称
        String BASE_INFO = "BASE_INFO";//类型
        String LIMIT_USER = "LIMIT_USER";//用户参与条件
        String LIMIT_MCH = "LIMIT_MCH";//商户参与条件
        String SETTING = "SETTING";//基本设置
        String WHITELIST = "WHITELIST";//白名单
        String AWARD = "AWARD";//奖品配置
        String SHARE = "SHARE";//分享配置
        String  STATISTIC_FIRST="STATISTIC_FIRST";//是否为首次统计
        String  AGENTSCORE="AGENT_SCORE";//积分类别
        String  AGENTNO="AGENT_NO";//机构号

        String NUMBER = "NUMBER";//奖品配置数量

        String USER_FILENAME = "USER:";//用户参与数据文件夹
        String USER_JOIN_SCORE = "USER_JOIN_SCORE:";//用户参与福分奖励
        String SCORE_EXCHANGE = "SCORE_EXCHANGE:";//积分商城

        //黑名单相关
        String BLACK = "BLACK:";//黑名单文件夹名称
        String BLACKLIST = "BLACKLIST";//黑名单明细
        String BLACKRULE = "BLACKRULE";//黑名单规则
        String ACTIVITY_BLACKLIST_RULE = "BLACKLIST_RULE";//黑名单规则
        String SCORE_BLACKLIST_RULE = "SCORE_BLACKLIST_RULE";//积分黑名单规则
        String ACTIVITYBLACKLIST = "ACTIVITYBLACKLIST";//活动黑名单
        String ACTIVITY_BLACKLIST = "ACTIVITY_BLACKLIST";//活动黑名单
        String BLACKLIST_RULE = "BLACKLIST_RULE";//黑名单规则
        String SCORE_EXCHANGE_BLACKLIST = "SCORE_EXCHANGE_BLACKLIST";//积分兑换黑名单
        String EMPLOYEE_BLACKLIST = "EMPLOYEE_BLACKLIST"; // 客户经理黑名单
    }

    /**
     * 黑名单规则类型 0：客户经理 1 其他
     */
    public interface BLACKLIST_RULE_TYPE {
        //客户经理
        int EMPLOYEE = 0;
        //其他
        int OTHER = 1;
    }

    /**
     * 积分类别
     */
    public interface SCORE {
        String RULE = "RULE";//规则
        String ACTIVITY = "ACTIVITY";//活动
        String AWARD = "AWARD";//活动奖品

        String COUPON = "COUPON";//卡券
        String GOODS = "GOODS";//实物
        String VIRTUAL = "VIRTUAL";//虚拟券
    }

    /**
     * 积分标记
     */
    public interface SCORE_FLAG {
        int ADD = 0;// 新增
        int REDUCE = 1;//减少
        int EXPIRED = 2;//过期
    }

    /**
     * 积分过期类型
     */
    public interface SCORE_EXPIRED_TYPE {
        /**
         * n天后过期
         */
        int N_DAY = 0;
        /**
         * 指定时间过期
         */
        int SET_TIME = 1;
        /**
         * 次季度首月月底失效
         */
        int NEXT_QUARTER = 2;
    }

    /**
     * 用户奖品使用状态
     */
    public interface FANS_AWARD_STATE {
        int UNUSED = 0;//未使用
        int USED = 1;//已使用（已消耗）
        int EXPIRED = 2;//已过期
        int ACTIVATE = 3;//待激活
        int DISABLED = 4;//已失效
    }

    /**
     * 活动奖品配置状态  0草稿 1配置中（下线）  2配置完成（上线）  3 已过期  4已失效
     */
    public interface AWARD_STATE {
        int DRAFT = 0;//草稿
        int OFFLINE = 1;//配置中（下线）
        int ONLINE = 2;//配置完成（上线）
        int EXPIRED = 3;//已过期
    }
    /**
     * 配置状态：完成
     */
    private final int CONFIG_STATE_COMPLETE = 2;

    /**
     * 通知类型
     */
    public interface NOTICE {
        String ALL = "ALL";//全平台通知
        String GROUP = "GROUP";//某个商圈的通知
        String USER = "USER";//某个用户的通知
    }

    /**
     * 周期类型
     */
    public interface PERIOD {
        int DAY = 1;//日
        int WEEK = 2;//周
        int MONTH = 3;//月
        int YEAR=4;//年
    }

    /**
     * 是否关注公众号
     */
    public interface IS_FOLLOW {
        boolean YES = true;//是
        boolean NO = false;//否
    }

    /**
     * oss文件上传分类
     */
    public interface OSS_UPLOAD_TYPE {
        int MCH_IMPORT = 1;//旧商户导入平台
        int ACTIVITY_CHANNEL_IMPORT = 2;//活动渠道码导入
        int ACTIVITY_STATISTICS_BACKUP = 3;//活动效果统计Excel记录留存
        int COUPON_MCH_TYPE = 4;// 卡券可核销商户名单
        int ACTIVITY_ASSIGN_IMPORT = 5;// 定向派券活动名单导入
        int ACTIVITY_DISPOSABLE_IMPORT = 6;// 一次性派发积分活动名单导入
        int ACTIVITY_DISPOSABLE_RESULT_EXPORT = 7;// 一次性派发积分活动名单结果导出
        int ACTIVITY_COUPON_SETTING = 8; // 卡券设置函
        int SEND_UP = 9; // 卡券设置函
        int PULL_RESULT = 10; // 卡券设置函
        int ACTIVITY_DISPOSABLE_SUCCESS_NORMAL = 11;// 福分匹配成功的结果文件
        int ACTIVITY_DISPOSABLE_FAIL_NORMAL = 12;// 福分匹配失败的结果文件
        int MCH_INFO_COMPARE_SUCCESS = 13;// 商户数据对比成功的结果文件
        int MCH_INFO_COMPARE_FAIL = 14;// 商户数据对比失败的结果文件
        int BLACKLIST_IMPORT = 15; // 黑名单导入文件
        int MCH_INFO_IMPORT_FAIL = 16; //商户导入失败的结果文件
        int VIRTUAL_CDK_IMPORT = 17;
        int AGENT_EMPLOYEE_IMPORT_FAIL = 18; //机构人员导入失败的结果文件
        int USER_LIST_INFORMATION = 19; //用户列表和积分详情
        int AGENT_INFO_IMPORT = 20; //机构信息列表导出
        int SELF_BUILD_CHANNEL_IMPORT = 21; //自建渠道码导入失败结果文件
        int SELF_BUILD_CHANNEL_EXPORT = 22;
    }

    /**
     * 批次号
     */
    public interface REDIS_BATCH_NO {
        String CURRENT_DATE="CURRENT_DATE";
        String BATCH_NO="BATCH_NO";
        int STEP=1;
    }

    /**
     * 批次号
     */
    public interface REDIS_CHANNEL_CODE {
        String CURRENT_DATE = "CURRENT_DATE";
        String CHANNEL_CODE = "CHANNEL_CODE";
        int STEP = 1;
    }

    /**
     * 是否删除 0否 1是，默认0
     */
    public interface IS_DELETED {
        int YES = 1;//是
        int NO = 0;//否
    }

    /**
     * 营销行为积分字典键
     */
    public interface POINT{
        String POINT_PRODUCE =  "pointProduceConfig";
        String COUPON_KEY = "coupon";
        String AUTH_KEY = "auth";
        String INVITER_KEY = "inviter";
        String FANS_AWARD_KEY = "FANSAWARD";
        String PROPERTY_KEY = "property";
    }

    /**
     * redis Host
     */
    public interface RedisHost{
        String HOST_DEV = "192.168.1.185"; // 开发环境
        String HOST_ALIYUN = "r-bp1fugdhp827yui0xs.redis.rds.aliyuncs.com"; // 阿里云环境
        String HOST_TIANYIYUN = "192.168.0.40"; // 天翼云环境
    }
    /**
     * redis pwd
     */
    public interface RedisPWD{
        String PWD_DEV = "123456"; // 开发环境密码
        String PWD_ALIYUN = "wsxWSX123!@#"; // 阿里云环境密码
        String PWD_TIANYIYUN = "Jrst@2023"; // 天翼云环境密码
    }

    /**
     * 用户奖品tag
     */
    public interface FANS_AWARD_TAG {
        String REAL_NAME_AUTH = "REAL_NAME";//实名认证类活动
    }

    /**
     * 用户唯一奖品状态
     */
    public interface ONLY_ONE_AWARD_STATE {
        // 有效（待激活、待使用、已使用）
        String VALID = "VALID";
        // 无效（过期）
        String INVALID = "INVALID";
    }

    /**
     * 是否实名
     */
    public interface IS_AUTH {
        int YES = 0;//是
        int NO = 1;//否
    }

    /**
     *  活动状态：0草稿 1审批中 2通过 3未通过  4上线 5下线 6已结束
     */
    public interface ACTIVITY_STATE {
        int DRAFT = 0;//草稿
        int EXAMINE = 1;//审批中
        int PASS = 2;//通过
        int REJECT= 3;//未通过
        int ONLINE = 4;//上线
        int OFFLINE = 5;//下线
        int EXPIRED = 6;//已结束
        int RECEIPT = 7;//垫资方参数已回执
        int EXCEPTION = 8;//异常活动
    }

    /**
     * 营销支付通道
     */
    public interface IF_CODE_PAY{
        String YS_PAY = "yspay";
        String TL_PAY = "tlpay";
        String HK_PAY = "hkpay";
        String LKLS_PAY = "lklspay";
    }

    /**
     * 审批类型
     */
    public interface AUDIT_TYPE{
        String ACTIVITY ="activity";
        String MCHCOUPON ="mchCoupon";
    }

    /**
     * 审批类型
     */
    public interface AUDIT_INFO_TYPE{
        String PROXY = "proxy";
        String MANAGE = "manage";
        String FANS = "fans";
    }

    /**
     * 审批状态 0 未审批 1审批通过 2审批拒绝
     */
    public interface AUDIT_STATE{
        int UN_AUDIT = 0;
        int AUDIT_PASS = 1;
        int AUDIT_REJECT = 2;
        int AUDIT_REVOKE = 3;
    }

    /**
     * 渠道类型（0：机构员工，1：商户，2：机构网点）
     */
    public interface CHANNEL_TYPE{
        /**
         * 机构员工
         */
        int ORG_EMPLOYEE = 0;
        /**
         * 商户
         */
        int MERCHANT = 1;
        /**
         * 机构网点
         */
        int ORG_NETWORK = 2;
        /**
         * 自建渠道
         */
        int SELF_BUILD = 3;
    }

    /**
     * 活动二维码tag类型
     */
    public interface QRCODE_TAG_TYPE{
        //商户
        int MERCHANT = 0;
        //机构
        int ORG = 1;
        //客户经理
        int AGENT_EMPLOYEE = 2;
    }

    /**
     * 1 支付宝满减活动
     * 2 支付宝随机减活动
     * 3 微信满减活动
     * 4 微信随机减活动
     * 5 微信代金券
     */
    public interface COUPON_TYPE{
        int ALIMJ = 1;
        int ALISJJ = 2;
        int WXMJ = 3;
        int WXSJJ = 4;
        int WXDJQ = 5;
    }

    /**
     * 小程序类型 0微信公众号   1微信小程序
     */
    public interface AGENT_APP_TYPE{
        int WX_OFFICIAL = 0;
        int WX_LITE = 1;
    }

    /**
     *  小程序分组key
     */
    public static final Map<Integer, String> AGENT_APP_GROUP_KEY_MAP = new HashMap<>();
    static{
        AGENT_APP_GROUP_KEY_MAP.put(AGENT_APP_TYPE.WX_OFFICIAL, "wxOfficialConfig");
        AGENT_APP_GROUP_KEY_MAP.put(AGENT_APP_TYPE.WX_LITE, "wxLiteConfig");
    }

    /**
     *  小程序分组name
     */
    public static final Map<Integer, String> AGENT_APP_GROUP_NAME_MAP = new HashMap<>();
    static{
        AGENT_APP_GROUP_NAME_MAP.put(AGENT_APP_TYPE.WX_OFFICIAL, "微信公众号配置");
        AGENT_APP_GROUP_NAME_MAP.put(AGENT_APP_TYPE.WX_LITE, "微信小程序配置");
    }

    /**
     * 系统配置类型 text-输入框, textarea-多行文本, uploadImg-上传图片, switch-开关
     */
    public interface SYS_CONFIG_TYPE{
        String TEXT = "text";
        String TEXTAREA = "textarea";
        String UPLOAD_IMG = "uploadImg";
        String SWITCH = "switch";
    }

    /**
     *  is_restrict_bank
     *  0不限制卡支付 1限制邮储借记卡支付(储蓄卡) 2 限制邮政贷记卡（信用卡）
     */
    public static final Map<Integer,String> RESTRICT_BANK_TYPE_MAP = new HashMap<>();
    static{
        RESTRICT_BANK_TYPE_MAP.put(0,"不限制卡支付");
        RESTRICT_BANK_TYPE_MAP.put(1,"限制邮储借记卡支付(储蓄卡)");
        RESTRICT_BANK_TYPE_MAP.put(2,"限制邮政贷记卡（信用卡）");
    }

    /**
     * 导出报表枚举
     */
    public interface EXPORT_TASK_ENUM {
        /**
         * 资源类型
         */
        interface RESOURCE_TYPE {
            // 商户信息数据
            String MCH = "MCH";
            // 机构信息数据
            String AGENT = "AGENT";
            // 活动数据
            String ACTIVITY = "ACTIVITY";
            // 小程序用户数据
            String FANS = "FANS";
        }

        /**
         * 文件类型
         */
        interface FILE_TYPE {
            String EXCEL = "EXCEL";
            String PDF = "PDF";
            String WORD = "WORD";
            String JSON = "JSON";
            String XML = "XML";
        }

        /**
         * 下载通道
         */
        interface REQUEST_CODE {
            // 实名数据
            String REAL = "real";
            // 活动看板
            String ACTIVITY_BOARD = "activityBoard";
            // 积分明细统计
            String SCORE_RECORD = "scoreRecord";
            //积分数量按月统计
            String SCORE_NUM_MONTH = "scoreNumMonth";
            // 存量会员报表
            String OLD_FANS_INFO = "oldFansInfo";
            // 全量会员报表
            String MEMBER_INFO = "memberInfo";
            //越减越便宜用户参与记录明细
            String FANS_PARTICIPATION_RECORD = "fansParticipationRecord";
            //越减越便宜 机构明细表
            String AGENT_DETAIL = "agentDetail";
            //越减越便宜 商户版
            String MCH_DETAIL = "mchProgress";
        }

        /**
         * 状态
         */
        interface STATUS {
            // 等待执行
            String PENDING = "PENDING";
            // 正在处理
            String PROCESSING = "PROCESSING";
            // 执行成功
            String SUCCESS = "SUCCESS";
            // 执行失败
            String FAILED = "FAILED";
            // 已取消
            String CANCELLED = "CANCELLED";
        }
    }
}